from DrissionPage import Chromium, ChromiumOptions, SessionOptions

tab = Chromium().latest_tab

tab.get('https://ad.xiaohongshu.com/aurora/ad/manage/unit?vSellerId=61381e3eda7b520001533a03')  # 访问网址，这行产生的数据包不监听

tab.listen.start('/api/leona/rtb/unit/search')  # 开始监听单元界面，指定获取包含该文本的数据包
# campaignId：计划ID 可以直接从接口中爬到
# unitId：单元ID 需要从表格中获取
# data.fee:累计消费
# eventBid: 当前出价(单位:分)

data_dict = {}  # 定义一个空字典，用于保存 unitId -> 数据 的映射
while True:
    res = tab.listen.wait()  # 等待并获取一个数据包
    unit_data = res.response.body.get('data')

    print(unit_data)

    data_list = unit_data.get('list')
    for item in data_list:
        unit_id = item.get('unitId')
        if not unit_id:
            continue  # 跳过没有 unitId 的数据

        data_dict[unit_id] = {
            'campaignId': item.get('campaignId'),
            'fee': item.get('data', {}).get('fee'),
            'eventBid': item.get('eventBid')
        }
    next_ele = tab('tag:span@@class=d-text --color-text-title --size-text-paragraph d-pagination-text d-text-nowrap@@text()=跳至').parent(1).prev().child(index=-1)
    if 'disabled' in next_ele.attr('class'):
        break
    next_ele.click(by_js=True)

